package com.softer.chengxin.role.controller;

import com.softer.chengxin.common.domin.CommonResult;
import com.softer.chengxin.common.domin.ManagerPageResult;
import com.softer.chengxin.common.domin.Page;
import com.softer.chengxin.common.domin.RoleModules;
import com.softer.chengxin.common.enums.ResultEnum;
import com.softer.chengxin.role.entity.Role;
import com.softer.chengxin.role.service.RoleService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpSession;
import java.util.ArrayList;
import java.util.List;

/**
 * @author Gong Zhiyang
 * @date 2018/10/13
 */
@RestController
@RequestMapping("/api/role")
public class RoleController {
    @Autowired
    private RoleService roleService;

    /**
     * 删除角色
     *
     * @param id 角色ID
     * @return 处理结果
     */
    @PostMapping("/delete")
    public CommonResult delete(int id) {
        return roleService.delete(id);
    }

    /**
     * 新增角色
     *
     * @param role    角色信息
     * @param session 缓存信息
     * @return 处理结果
     */
    @PostMapping("/add")
    public CommonResult add(Role role, HttpSession session) {
        //登陆名
        String loginName = (String) session.getAttribute("loginName");
        if (StringUtils.isBlank(loginName)){
            return new CommonResult(ResultEnum.FAIL.getCode(),"请重新登陆后操作");
        }
        role.setAdder(loginName);
        return roleService.add(role);
    }

    /**
     * 编辑角色
     *
     * @param role    角色信息
     * @param session 缓存信息
     * @return 处理结果
     */
    @PostMapping("/update")
    public CommonResult update(Role role, HttpSession session) {
        //登陆名
        String loginName = (String) session.getAttribute("loginName");
        if (StringUtils.isBlank(loginName)){
            return new CommonResult(ResultEnum.FAIL.getCode(),"请重新登陆后操作");
        }
        role.setAdder(loginName);
        return roleService.update(role);
    }

    /**
     * 获取角色信息
     *
     * @param id 角色ID
     * @return 角色信息
     */
    @PostMapping("/getRoleInfo")
    public Role getRoleInfo(Integer id) {
        return roleService.getRoleInfo(id);
    }

    /**
     * 查询权限列表
     *
     * @return 权限集合
     */
    @PostMapping("/loadModules")
    public List<RoleModules> loadModules() {
        return roleService.loadModules();
    }

    /**
     * 获取角色列表
     * 获取当前登录用户创建的角色列表
     *
     * @return 角色列表
     */
    @PostMapping("/getRoleList")
    public List<Role> getRoleList(HttpSession session) {
        // 登陆名
        String loginName = (String) session.getAttribute("loginName");
        if (StringUtils.isBlank(loginName)){
            return new ArrayList<>();
        }
        return roleService.getRoleList(loginName);
    }

    /**
     * 页面初始化时，加载角色列表
     *
     * @param page    页面信息
     * @param session 缓存信息
     * @return 角色列表
     */
    @PostMapping("/load")
    public ManagerPageResult load(Page page, HttpSession session) {
        // 登陆名
        String loginName = (String) session.getAttribute("loginName");
        if (StringUtils.isBlank(loginName)){
            return new ManagerPageResult();
        }
        return roleService.load(page, loginName);
    }
}
